#include<iostream>
#include<vector>
using namespace std;

//int longestOnes1(vector<int>& nums, int k)
//{
//    int left = 0;
//    int right = 0;
//    int len = INT_MAX;
//    while (left < nums.size())
//    {
//        right = left;
//        int count = 0;
//        while (right < nums.size())
//        {
//            if (nums[right] == 0)
//            {
//                count++;
//            }
//            if (count > k)
//            {
//                len = min(len, right - left);
//                break;
//            }
//            right++;
//        }
//        left++;
//    }
//    return len== INT_MAX ? 0 :len;
//}
int longestOnes(vector<int>& nums, int k)
{
    int left = 0, right = 0;
    int len = 0;  
    int sz = nums.size();
    int zero = 0;
    while (right < sz)
    {
        if (nums[right] == 0)
        {
            zero++;
        }
        while (zero > k)
        {
            if (nums[left] == 0)
            {
                zero--;
            }
            left++;
        }
        len = max(len, right - left + 1);
        right++;
    }

    return len;
}

int main()
{
    vector<int> n = { 0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1 };
    cout << longestOnes(n, 3) << endl;
    return 0;
}
